#ifndef MDS_ENGINE_INCLUDED
#define MDS_ENGINE_INCLUDED 1

#include "./frame.h"
#include "./hasten/cells.h"
#include "./step.h"

/** \brief wrapper for a simulation 
 */
typedef struct
{
	
	mds_frame  frame;    /*!< the simulation frame      */
	mds_cells  cells;    /*!< cells based on cutout     */
	Real       dt_sim;   /*!< the motion step           */
	Real       dt_out;   /*!< the output step           */
	Real       cutoff;   /*!< potential cutoff distance */
	Real       cutout;   /*!< cells cutout              */
	mds_step   step;     /*!< verlet | beeman | ...     */
}
mds_engine;

#define MDS_ENGINE_INIT {  MDS_FRAME_INIT, MDS_CELLS_INIT, 0, 0, 0, 0,  MDS_STEP_INIT }

int   mds_engine_load( mds_engine *engine, size_t num_particles );
void  mds_engine_quit( mds_engine *engine );

#endif
